package service;

import lombok.Data;
import pojo.CartItem;
import pojo.Product;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

@Data
public class ProductService {
    //定义购物车存放的所有商品
    private Map<String, CartItem> map = new HashMap<>();

    //添加商品到购物车
    public void add(Product product) {
        //断是否在map中有此商品，
        //得到商品id
        String pid = product.getPid();
        // 判断map中购物项中是否有此商品
        if(map.containsKey(pid)){       // 有此商品就修改库存及商品数量
            // 根据key得到购物项
            CartItem item = map.get(pid);
            // 修改购买数量
            item.setNum(item.getNum() + 1);
            //购买小计
            item.setTotal(item.getNum()*product.getPrice());

        }else{                          // 没有此商品就添加到集合中
            //  构造要添加的购物项对象
            CartItem cartItem = new CartItem(product,1,product.getPrice());
            //  添加到商品列表集合
            map.put(pid,cartItem);
        }
        // 修改库存
        product.setQuantity(product.getQuantity() - 1);
    }
    //shanchu
    public void remove(String pid) {
        //得到 购买对象
        CartItem cartItem = map.get(pid);
        // 商品
        Product product = cartItem.getProduct();
        // 修改属性值
        product.setQuantity(product.getQuantity()+cartItem.getNum());
        map.remove(pid);
    }

    public void clear() {
//        恢复所有库存
        for (CartItem value : map.values()) {
            Product product = value.getProduct();
            //得到对象
            product.setQuantity(product.getQuantity() + value.getNum());
        }
        //清空
        map.clear();
    }
}
